package 面向对象高级特性;
// 定义一个表示动物的基类
class Animal {
    // 定义一个方法，模拟动物发出声音的行为
    public void makeSound() {
        // 输出：动物发出声音
        System.out.println("动物发出声音");
    }
}

// 定义一个继承自Animal类的子类Dog（狗）
class Dog extends Animal {
    // 重写父类Animal中的makeSound方法，实现狗叫的功能
    @Override
    public void makeSound() {
        // 输出：狗叫声
        System.out.println("狗叫声");
    }
}

// 主程序入口
public class main5_3 {
    // 主函数
    public static void main(String[] args) {
        // 创建Animal类的对象实例myAnimal
        Animal myAnimal = new Animal();
        // 调用Animal对象的makeSound方法
        myAnimal.makeSound(); // 输出："动物发出声音"

        // 创建Dog类的对象实例myDog，并将其赋值给Animal类型的引用变量
        Animal myDog = new Dog();
        // 调用myDog对象（实际上是Dog类型）的makeSound方法
        myDog.makeSound(); // 由于Dog类重写了makeSound方法，所以输出："狗叫声"
    }
}